﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OracleClient;
using EntitiesLayer.Entities;
using System.Data;

namespace DataLayer.DAO
{
    public class MantenimientosDAO
    {
        private Connection.Connection cn;
        private OracleConnection objCn;

        public MantenimientosDAO()
        {
            cn = new Connection.Connection();
            objCn = cn.Conecta();
        }

        /// <summary>
        /// ////////////////////////// ------ PAIS -------- ////////////////////////////////////////
        /// </summary>

        public int insertPais(Mantenimientos p)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTPAIS", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter p1 = new OracleParameter("R_NOMBRE", OracleType.VarChar, 100);
                p1.Value = p.NomPais;

                OracleParameter p2 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                p2.Value = p.FecRegistro;

                OracleParameter p3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                p3.Value = p.FecActualizacion;

                OracleParameter p4 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                p4.Value = p.NumDocUsuario;

                cmd.Parameters.Add(p1);
                cmd.Parameters.Add(p2);
                cmd.Parameters.Add(p3);
                cmd.Parameters.Add(p4);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarPais(string nombre)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARPAIS", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_NOMBRE";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 100;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = nombre.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos p = new Mantenimientos();
                        p.CodPais = Convert.ToString(dr[0]);
                        p.NomPais = Convert.ToString(dr[1]);
                        p.FecRegistro = Convert.ToDateTime(dr[2]);
                        p.FecActualizacion = Convert.ToDateTime(dr[3]);
                        p.NumDocUsuario = Convert.ToString(dr[4]);
                        list.Add(p);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deletePais(Mantenimientos p)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETEPAIS", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter p1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                p1.Value = p.CodPais;

                cmd.Parameters.Add(p1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updatePais(Mantenimientos p)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATEPAIS", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter p1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                p1.Value = p.CodPais;

                OracleParameter p2 = new OracleParameter("R_NOMBRE", OracleType.VarChar, 100);
                p2.Value = p.NomPais;

                OracleParameter p3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                p3.Value = p.FecActualizacion;

                cmd.Parameters.Add(p1);
                cmd.Parameters.Add(p2);
                cmd.Parameters.Add(p3);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        /// <summary>
        /// ////////////////////////// ------ TIPO DOCUMENTO -------- ///////////////////////////////
        /// </summary>
        ///

        public int insertTipoDocumento(Mantenimientos td)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTTIPODOCUMENTO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter td1 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 200);
                td1.Value = td.DesTipoDocumento;

                OracleParameter td2 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                td2.Value = td.FecRegistro;

                OracleParameter td3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                td3.Value = td.FecActualizacion;

                OracleParameter td4 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                td4.Value = td.NumDocUsuario;

                cmd.Parameters.Add(td1);
                cmd.Parameters.Add(td2);
                cmd.Parameters.Add(td3);
                cmd.Parameters.Add(td4);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarTipoDocumento(string descripcion)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARTIPODOCUMENTO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_DESCRIPCION";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 200;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = descripcion.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos td = new Mantenimientos();
                        td.CodTipoDocumento = Convert.ToString(dr[0]);
                        td.DesTipoDocumento = Convert.ToString(dr[1]);
                        td.FecRegistro = Convert.ToDateTime(dr[2]);
                        td.FecActualizacion = Convert.ToDateTime(dr[3]);
                        td.NumDocUsuario = Convert.ToString(dr[4]);
                        list.Add(td);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deleteTipoDocumento(Mantenimientos td)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETETIPODOCUMENTO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter td1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                td1.Value = td.CodTipoDocumento;

                cmd.Parameters.Add(td1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updateTipoDocumento(Mantenimientos td)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATETIPODOCUMENTO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter td1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                td1.Value = td.CodTipoDocumento;

                OracleParameter td2 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 200);
                td2.Value = td.DesTipoDocumento;

                OracleParameter td3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                td3.Value = td.FecActualizacion;

                cmd.Parameters.Add(td1);
                cmd.Parameters.Add(td2);
                cmd.Parameters.Add(td3);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        /// <summary>
        /// ////////////////////////// ------ TIPO PACIENTE -------- ///////////////////////////////
        /// </summary>
        ///

        public int insertTipoPaciente(Mantenimientos tp)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTTIPOPACIENTE", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter tp1 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 100);
                tp1.Value = tp.DesTipoPaciente;

                OracleParameter tp2 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                tp2.Value = tp.FecRegistro;

                OracleParameter tp3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                tp3.Value = tp.FecActualizacion;

                OracleParameter tp4 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                tp4.Value = tp.NumDocUsuario;

                cmd.Parameters.Add(tp1);
                cmd.Parameters.Add(tp2);
                cmd.Parameters.Add(tp3);
                cmd.Parameters.Add(tp4);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarTipoPaciente(string descripcion)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARTIPOPACIENTE", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_DESCRIPCION";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 100;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = descripcion.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos tp = new Mantenimientos();
                        tp.CodTipoPaciente = Convert.ToString(dr[0]);
                        tp.DesTipoPaciente = Convert.ToString(dr[1]);
                        tp.FecRegistro = Convert.ToDateTime(dr[2]);
                        tp.FecActualizacion = Convert.ToDateTime(dr[3]);
                        tp.NumDocUsuario = Convert.ToString(dr[4]);
                        list.Add(tp);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deleteTipoPaciente(Mantenimientos tp)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETETIPOPACIENTE", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter tp1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                tp1.Value = tp.CodTipoPaciente;

                cmd.Parameters.Add(tp1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updateTipoPaciente(Mantenimientos tp)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATETIPOPACIENTE", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter tp1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                tp1.Value = tp.CodTipoPaciente;

                OracleParameter tp2 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 100);
                tp2.Value = tp.DesTipoPaciente;

                OracleParameter tp3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                tp3.Value = tp.FecActualizacion;

                cmd.Parameters.Add(tp1);
                cmd.Parameters.Add(tp2);
                cmd.Parameters.Add(tp3);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        /// <summary>
        /// ////////////////////////// ------ COMPAÑIA SEGURO -------- ///////////////////////////////
        /// </summary>
        ///

        public int insertCiaSeguro(Mantenimientos s)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTCIASEGURO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter s1 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 200);
                s1.Value = s.DesCiaSeguro;

                OracleParameter s2 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                s2.Value = s.FecRegistro;

                OracleParameter s3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                s3.Value = s.FecActualizacion;

                OracleParameter s4 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                s4.Value = s.NumDocUsuario;

                cmd.Parameters.Add(s1);
                cmd.Parameters.Add(s2);
                cmd.Parameters.Add(s3);
                cmd.Parameters.Add(s4);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarCiaSeguro(string descripcion)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARCIASEGURO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_DESCRIPCION";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 200;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = descripcion.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos s = new Mantenimientos();
                        s.CodCiaSeguro = Convert.ToString(dr[0]);
                        s.DesCiaSeguro = Convert.ToString(dr[1]);
                        s.FecRegistro = Convert.ToDateTime(dr[2]);
                        s.FecActualizacion = Convert.ToDateTime(dr[3]);
                        s.NumDocUsuario = Convert.ToString(dr[4]);
                        list.Add(s);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deleteCiaSeguro(Mantenimientos s)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETECIASEGURO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter s1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                s1.Value = s.CodCiaSeguro;

                cmd.Parameters.Add(s1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updateCiaSeguro(Mantenimientos s)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATECIASEGURO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter s1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                s1.Value = s.CodCiaSeguro;

                OracleParameter s2 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 200);
                s2.Value = s.DesCiaSeguro;

                OracleParameter s3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                s3.Value = s.FecActualizacion;

                cmd.Parameters.Add(s1);
                cmd.Parameters.Add(s2);
                cmd.Parameters.Add(s3);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        /// <summary>
        /// ////////////////////////// ------ RELACION PACIENTE -------- ///////////////////////////////
        /// </summary>
        ///

        public int insertRelacionPaciente(Mantenimientos rp)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTRELACIONPACIENTE", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter rp1 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 200);
                rp1.Value = rp.DesRelacionPaciente;

                OracleParameter rp2 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                rp2.Value = rp.FecRegistro;

                OracleParameter rp3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                rp3.Value = rp.FecActualizacion;

                OracleParameter rp4 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                rp4.Value = rp.NumDocUsuario;

                cmd.Parameters.Add(rp1);
                cmd.Parameters.Add(rp2);
                cmd.Parameters.Add(rp3);
                cmd.Parameters.Add(rp4);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarRelacionPaciente(string descripcion)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARRELACIONPACIENTE", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_DESCRIPCION";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 200;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = descripcion.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos rp = new Mantenimientos();
                        rp.CodRelacionPaciente = Convert.ToString(dr[0]);
                        rp.DesRelacionPaciente = Convert.ToString(dr[1]);
                        rp.FecRegistro = Convert.ToDateTime(dr[2]);
                        rp.FecActualizacion = Convert.ToDateTime(dr[3]);
                        rp.NumDocUsuario = Convert.ToString(dr[4]);
                        list.Add(rp);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deleteRelacionPaciente(Mantenimientos rp)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETERELACIONPACIENTE", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter rp1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 20);
                rp1.Value = rp.CodRelacionPaciente;

                cmd.Parameters.Add(rp1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updateRelacionPaciente(Mantenimientos rp)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATERELACIONPACIENTE", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter rp1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 20);
                rp1.Value = rp.CodRelacionPaciente;

                OracleParameter rp2 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 200);
                rp2.Value = rp.DesRelacionPaciente;

                OracleParameter rp3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                rp3.Value = rp.FecActualizacion;

                cmd.Parameters.Add(rp1);
                cmd.Parameters.Add(rp2);
                cmd.Parameters.Add(rp3);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        /// <summary>
        /// ////////////////////////// ------ SEDE -------- ///////////////////////////////
        /// </summary>
        ///

        public int insertSede(Mantenimientos s)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTSEDE", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter s1 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 500);
                s1.Value = s.DesSede;

                OracleParameter s2 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                s2.Value = s.FecRegistro;

                OracleParameter s3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                s3.Value = s.FecActualizacion;

                OracleParameter s4 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                s4.Value = s.NumDocUsuario;

                cmd.Parameters.Add(s1);
                cmd.Parameters.Add(s2);
                cmd.Parameters.Add(s3);
                cmd.Parameters.Add(s4);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarSede(string descripcion)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARSEDE", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_DESCRIPCION";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 500;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = descripcion.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos s = new Mantenimientos();
                        s.CodSede = Convert.ToString(dr[0]);
                        s.DesSede = Convert.ToString(dr[1]);
                        s.FecRegistro = Convert.ToDateTime(dr[2]);
                        s.FecActualizacion = Convert.ToDateTime(dr[3]);
                        s.NumDocUsuario = Convert.ToString(dr[4]);
                        list.Add(s);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deleteSede(Mantenimientos s)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETESEDE", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter s1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                s1.Value = s.CodSede;

                cmd.Parameters.Add(s1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updateSede(Mantenimientos s)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATESEDE", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter s1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                s1.Value = s.CodSede;

                OracleParameter s2 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 500);
                s2.Value = s.DesSede;

                OracleParameter s3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                s3.Value = s.FecActualizacion;

                cmd.Parameters.Add(s1);
                cmd.Parameters.Add(s2);
                cmd.Parameters.Add(s3);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        /// <summary>
        /// ////////////////////////// ------ UNIDAD NEGOCIO -------- ///////////////////////////////
        /// </summary>
        ///

        public int insertUnidadNegocio(Mantenimientos un)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTUNIDADNEGOCIO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter un1 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 300);
                un1.Value = un.DesUnidadNegocio;

                OracleParameter un2 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                un2.Value = un.FecRegistro;

                OracleParameter un3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                un3.Value = un.FecActualizacion;

                OracleParameter un4 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                un4.Value = un.NumDocUsuario;

                cmd.Parameters.Add(un1);
                cmd.Parameters.Add(un2);
                cmd.Parameters.Add(un3);
                cmd.Parameters.Add(un4);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarUnidadNegocio(string descripcion)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARUNIDADNEGOCIO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_DESCRIPCION";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 300;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = descripcion.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos un = new Mantenimientos();
                        un.CodUnidadNegocio = Convert.ToString(dr[0]);
                        un.DesUnidadNegocio = Convert.ToString(dr[1]);
                        un.FecRegistro = Convert.ToDateTime(dr[2]);
                        un.FecActualizacion = Convert.ToDateTime(dr[3]);
                        un.NumDocUsuario = Convert.ToString(dr[4]);
                        list.Add(un);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deleteUnidadNegocio(Mantenimientos un)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETEUNIDADNEGOCIO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter un1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                un1.Value = un.CodUnidadNegocio;

                cmd.Parameters.Add(un1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updateUnidadNegocio(Mantenimientos un)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATEUNIDADNEGOCIO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter un1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                un1.Value = un.CodUnidadNegocio;

                OracleParameter un2 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 300);
                un2.Value = un.DesUnidadNegocio;

                OracleParameter un3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                un3.Value = un.FecActualizacion;

                cmd.Parameters.Add(un1);
                cmd.Parameters.Add(un2);
                cmd.Parameters.Add(un3);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        /// <summary>
        /// ////////////////////////// ------ ORIGEN -------- ///////////////////////////////
        /// </summary>
        ///

        public int insertOrigen(Mantenimientos o)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTORIGEN", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter o1 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 100);
                o1.Value = o.DesOrigen;

                OracleParameter o2 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                o2.Value = o.FecRegistro;

                OracleParameter o3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                o3.Value = o.FecActualizacion;

                OracleParameter o4 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                o4.Value = o.NumDocUsuario;

                cmd.Parameters.Add(o1);
                cmd.Parameters.Add(o2);
                cmd.Parameters.Add(o3);
                cmd.Parameters.Add(o4);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarOrigen(string descripcion)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARORIGEN", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_DESCRIPCION";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 100;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = descripcion.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos o = new Mantenimientos();
                        o.CodOrigen = Convert.ToString(dr[0]);
                        o.DesOrigen = Convert.ToString(dr[1]);
                        o.FecRegistro = Convert.ToDateTime(dr[2]);
                        o.FecActualizacion = Convert.ToDateTime(dr[3]);
                        o.NumDocUsuario = Convert.ToString(dr[4]);
                        list.Add(o);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deleteOrigen(Mantenimientos o)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETEORIGEN", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter o1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                o1.Value = o.CodOrigen;

                cmd.Parameters.Add(o1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updateOrigen(Mantenimientos o)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATEORIGEN", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter o1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                o1.Value = o.CodOrigen;

                OracleParameter o2 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 100);
                o2.Value = o.DesOrigen;

                OracleParameter o3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                o3.Value = o.FecActualizacion;

                cmd.Parameters.Add(o1);
                cmd.Parameters.Add(o2);
                cmd.Parameters.Add(o3);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        /// <summary>
        /// ////////////////////////// ------ PROVEEDOR -------- ///////////////////////////////
        /// </summary>
        ///

        public int insertProveedor(Mantenimientos p)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTPROVEEDOR", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter p1 = new OracleParameter("R_RAZ_SOC_PROV", OracleType.VarChar, 500);
                p1.Value = p.RazProveedor;

                OracleParameter p2 = new OracleParameter("R_APE_PROV", OracleType.VarChar, 200);
                p2.Value = p.ApeProveedor;

                OracleParameter p3 = new OracleParameter("R_NOM_PROV", OracleType.VarChar, 200);
                p3.Value = p.NomProveedor;

                OracleParameter p4 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                p4.Value = p.FecRegistro;

                OracleParameter p5 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                p5.Value = p.FecActualizacion;

                OracleParameter p6 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                p6.Value = p.NumDocUsuario;

                cmd.Parameters.Add(p1);
                cmd.Parameters.Add(p2);
                cmd.Parameters.Add(p3);
                cmd.Parameters.Add(p4);
                cmd.Parameters.Add(p5);
                cmd.Parameters.Add(p6);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarProveedor(string razonSocial)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARPROVEEDOR", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_RAZ_SOC_PROV";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 500;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = razonSocial.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos p = new Mantenimientos();
                        p.CodProveedor = Convert.ToString(dr[0]);
                        p.RazProveedor = Convert.ToString(dr[1]);
                        p.NomProveedor = Convert.ToString(dr[2]);
                        p.ApeProveedor = Convert.ToString(dr[3]);
                        p.NomContactoProveedor = Convert.ToString(dr[4]);
                        p.FecRegistro = Convert.ToDateTime(dr[5]);
                        p.FecActualizacion = Convert.ToDateTime(dr[6]);
                        p.NumDocUsuario = Convert.ToString(dr[7]);
                        list.Add(p);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deleteProveedor(Mantenimientos p)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETEPROVEEDOR", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter p1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                p1.Value = p.CodProveedor;

                cmd.Parameters.Add(p1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updateProveedor(Mantenimientos p)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATEPROVEEDOR", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter p1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                p1.Value = p.CodProveedor;

                OracleParameter p2 = new OracleParameter("R_RAZ_SOC_PROV", OracleType.VarChar, 500);
                p2.Value = p.RazProveedor;

                OracleParameter p3 = new OracleParameter("R_APE_PROV", OracleType.VarChar, 200);
                p3.Value = p.ApeProveedor;

                OracleParameter p4 = new OracleParameter("R_NOM_PROV", OracleType.VarChar, 200);
                p4.Value = p.NomProveedor;

                OracleParameter p5 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                p5.Value = p.FecActualizacion;

                cmd.Parameters.Add(p1);
                cmd.Parameters.Add(p2);
                cmd.Parameters.Add(p3);
                cmd.Parameters.Add(p4);
                cmd.Parameters.Add(p5);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        /// <summary>
        /// ////////////////////////// ------ ESTADO -------- ///////////////////////////////
        /// </summary>
        ///

        public int insertEstado(Mantenimientos e)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTESTADO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter e1 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 200);
                e1.Value = e.DesEstado;

                OracleParameter e2 = new OracleParameter("R_TIPO", OracleType.Int32);
                e2.Value = e.Tipo;

                OracleParameter e3 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                e3.Value = e.FecRegistro;

                OracleParameter e4 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                e4.Value = e.FecActualizacion;

                OracleParameter e5 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                e5.Value = e.NumDocUsuario;

                cmd.Parameters.Add(e1);
                cmd.Parameters.Add(e2);
                cmd.Parameters.Add(e3);
                cmd.Parameters.Add(e4);
                cmd.Parameters.Add(e5);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarEstado(string descripcion)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARESTADO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_DESCRIPCION";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 200;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = descripcion.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos e = new Mantenimientos();
                        e.CodEstado = Convert.ToString(dr[0]);
                        e.DesEstado = Convert.ToString(dr[1]);
                        e.FecRegistro = Convert.ToDateTime(dr[2]);
                        e.FecActualizacion = Convert.ToDateTime(dr[3]);
                        e.NumDocUsuario = Convert.ToString(dr[4]);
                        list.Add(e);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deleteEstado(Mantenimientos e)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETEESTADO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter e1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 20);
                e1.Value = e.CodEstado;

                cmd.Parameters.Add(e1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updateEstado(Mantenimientos e)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATEESTADO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter e1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 20);
                e1.Value = e.CodEstado;

                OracleParameter e2 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 200);
                e2.Value = e.DesEstado;

                OracleParameter e3 = new OracleParameter("R_TIPO", OracleType.Int32);
                e3.Value = e.Tipo;

                OracleParameter e4 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                e4.Value = e.FecActualizacion;

                cmd.Parameters.Add(e1);
                cmd.Parameters.Add(e2);
                cmd.Parameters.Add(e3);
                cmd.Parameters.Add(e4);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        /// <summary>
        /// ////////////////////////// ------ MOTIVO -------- ///////////////////////////////
        /// </summary>
        ///

        public int insertMotivoGeneral(Mantenimientos m)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTMOTIVOGENERAL", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter m1 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 500);
                m1.Value = m.DesGeneral;

                OracleParameter m2 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                m2.Value = m.FecRegistro;

                OracleParameter m3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                m3.Value = m.FecActualizacion;

                OracleParameter m4 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                m4.Value = m.NumDocUsuario;

                cmd.Parameters.Add(m1);
                cmd.Parameters.Add(m2);
                cmd.Parameters.Add(m3);
                cmd.Parameters.Add(m4);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int insertMotivoEspecifico(Mantenimientos m)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTMOTIVOESPECIFICO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter m1 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 500);
                m1.Value = m.DesEspecifico;

                OracleParameter m2 = new OracleParameter("R_MOTIVOGENERAL", OracleType.VarChar, 10);
                m2.Value = m.CodGeneral;

                OracleParameter m3 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                m3.Value = m.FecRegistro;

                OracleParameter m4 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                m4.Value = m.FecActualizacion;

                OracleParameter m5 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                m5.Value = m.NumDocUsuario;

                cmd.Parameters.Add(m1);
                cmd.Parameters.Add(m2);
                cmd.Parameters.Add(m3);
                cmd.Parameters.Add(m4);
                cmd.Parameters.Add(m5);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarMotivoGeneral(string descripcion)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARMOTIVOGENERAL", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_DESCRIPCION";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 500;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = descripcion.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos m = new Mantenimientos();
                        m.CodGeneral = Convert.ToString(dr[0]);
                        m.DesGeneral = Convert.ToString(dr[1]);
                        m.FecRegistro = Convert.ToDateTime(dr[2]);
                        m.FecActualizacion = Convert.ToDateTime(dr[3]);
                        m.NumDocUsuario = Convert.ToString(dr[4]);
                        list.Add(m);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public List<Mantenimientos> consultarMotivoEspecifico(string descripcion)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARMOTIVOESPECIFICO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_DESCRIPCION";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 500;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = descripcion.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos m = new Mantenimientos();
                        m.CodEspecifico = Convert.ToString(dr[0]);
                        m.DesEspecifico = Convert.ToString(dr[1]);
                        m.CodGeneral = Convert.ToString(dr[2]);
                        m.DesGeneral = Convert.ToString(dr[3]);
                        m.FecRegistro = Convert.ToDateTime(dr[4]);
                        m.FecActualizacion = Convert.ToDateTime(dr[5]);
                        m.NumDocUsuario = Convert.ToString(dr[6]);
                        list.Add(m);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deleteMotivoGeneral(Mantenimientos m)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETEMOTIVOGENERAL", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter m1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                m1.Value = m.CodGeneral;

                cmd.Parameters.Add(m1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int deleteMotivoEspecifico(Mantenimientos m)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETEMOTIVOESPECIFICO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter m1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                m1.Value = m.CodEspecifico;

                cmd.Parameters.Add(m1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updateMotivoGeneral(Mantenimientos m)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATEMOTIVOGENERAL", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter m1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                m1.Value = m.CodGeneral;

                OracleParameter m2 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 500);
                m2.Value = m.DesGeneral;

                OracleParameter m3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                m3.Value = m.FecActualizacion;

                cmd.Parameters.Add(m1);
                cmd.Parameters.Add(m2);
                cmd.Parameters.Add(m3);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updateMotivoEspecifico(Mantenimientos m)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATEMOTIVOESPECIFICO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter m1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                m1.Value = m.CodEspecifico;

                OracleParameter m2 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 500);
                m2.Value = m.DesEspecifico;

                OracleParameter m3 = new OracleParameter("R_MOTIVOGENERAL", OracleType.VarChar, 10);
                m3.Value = m.CodGeneral;

                OracleParameter m4 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                m4.Value = m.FecActualizacion;

                cmd.Parameters.Add(m1);
                cmd.Parameters.Add(m2);
                cmd.Parameters.Add(m3);
                cmd.Parameters.Add(m4);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        /// <summary>
        /// ////////////////////////// ------ AREA -------- ///////////////////////////////
        /// </summary>
        ///

        public int insertArea(Mantenimientos a)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTAREA", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter a1 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 200);
                a1.Value = a.DesArea;

                OracleParameter a2 = new OracleParameter("R_JEFE", OracleType.VarChar, 15);
                a2.Value = a.CodJefArea;

                OracleParameter a3 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                a3.Value = a.FecRegistro;

                OracleParameter a4 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                a4.Value = a.FecActualizacion;

                OracleParameter a5 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                a5.Value = a.NumDocUsuario;

                cmd.Parameters.Add(a1);
                cmd.Parameters.Add(a2);
                cmd.Parameters.Add(a3);
                cmd.Parameters.Add(a4);
                cmd.Parameters.Add(a5);

                if (a.CodSede == null)
                    cmd.Parameters.AddWithValue("R_Vsed_Cod_Sede", DBNull.Value);
                else
                    cmd.Parameters.AddWithValue("R_Vsed_Cod_Sede", a.CodSede);

                try
                {
                    objCn.Open();
                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                    throw ex;
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarArea(string descripcion, string pCodSede)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARAREA", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_DESCRIPCION";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 200;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = descripcion.Trim().ToLower();

                if (pCodSede == null)
                    cmd.Parameters.AddWithValue("R_Vsed_Cod_Sede", DBNull.Value);
                else
                    cmd.Parameters.AddWithValue("R_Vsed_Cod_Sede", pCodSede);

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();
                    OracleDataReader dr = cmd.ExecuteReader();
                    while (dr.Read())
                    {
                        Mantenimientos a = new Mantenimientos();
                        a.CodArea = Convert.ToString(dr[0]);
                        a.DesArea = Convert.ToString(dr[1]);
                        a.CodJefArea = Convert.ToString(dr[2]);
                        a.NomJefArea = Convert.ToString(dr[3]);
                        a.FecRegistro = Convert.ToDateTime(dr[4]);
                        a.FecActualizacion = Convert.ToDateTime(dr[5]);
                        a.NumDocUsuario = Convert.ToString(dr[6]);
                        a.CodSede = Convert.ToString(dr["Vsed_Cod_Sede"]);
                        a.DesSede = Convert.ToString(dr["Vsed_Desc_Sede"]);
                        list.Add(a);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                    throw ex;
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deleteArea(Mantenimientos a)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETEAREA", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter a1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                a1.Value = a.CodArea;

                cmd.Parameters.Add(a1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updateArea(Mantenimientos a)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATEAREA", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter a1 = new OracleParameter("R_CODIGO", OracleType.VarChar, 10);
                a1.Value = a.CodArea;

                OracleParameter a2 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 200);
                a2.Value = a.DesArea;

                OracleParameter a3 = new OracleParameter("R_JEFE", OracleType.VarChar, 15);
                a3.Value = a.CodJefArea;

                OracleParameter a4 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                a4.Value = a.FecActualizacion;

                cmd.Parameters.Add(a1);
                cmd.Parameters.Add(a2);
                cmd.Parameters.Add(a3);
                cmd.Parameters.Add(a4);

                if (a.CodSede == null)
                    cmd.Parameters.AddWithValue("R_Vsed_Cod_Sede", DBNull.Value);
                else
                    cmd.Parameters.AddWithValue("R_Vsed_Cod_Sede", a.CodSede);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                    throw ex;
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        /// <summary>
        /// ////////////////////////// ------ USUARIO -------- ///////////////////////////////
        /// </summary>
        ///

        public int insertUsuario(Mantenimientos u)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTUSUARIO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter u1 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                u1.Value = u.NumDocUsuario;

                OracleParameter u2 = new OracleParameter("R_TIP_DOC", OracleType.VarChar, 10);
                u2.Value = u.CodTipoDocumento;

                OracleParameter u3 = new OracleParameter("R_APELLIDOS", OracleType.VarChar, 200);
                u3.Value = u.ApeUsuario;

                OracleParameter u4 = new OracleParameter("R_NOMBRES", OracleType.VarChar, 200);
                u4.Value = u.NomUsuario;

                OracleParameter u5 = new OracleParameter("R_USER_LOGIN", OracleType.VarChar, 50);
                u5.Value = u.UserUsuario;

                OracleParameter u6 = new OracleParameter("R_PASS_LOGIN", OracleType.VarChar, 50);
                u6.Value = u.PassUsuario;

                OracleParameter u7 = new OracleParameter("R_EMAIL", OracleType.VarChar, 100);
                u7.Value = u.Email;

                OracleParameter u8 = new OracleParameter("R_PERFIL", OracleType.Int32);
                u8.Value = u.IdPerfil;

                OracleParameter u9 = new OracleParameter("R_AREA", OracleType.VarChar, 20);
                u9.Value = u.CodArea;

                cmd.Parameters.Add(u1);
                cmd.Parameters.Add(u2);
                cmd.Parameters.Add(u3);
                cmd.Parameters.Add(u4);
                cmd.Parameters.Add(u5);
                cmd.Parameters.Add(u6);
                cmd.Parameters.Add(u7);
                cmd.Parameters.Add(u8);
                cmd.Parameters.Add(u9);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarUsuario(string nombres, string apellidos, string area)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARUSUARIO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_NOMBRES";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 200;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = nombres.Trim().ToLower();

                OracleParameter apellidoParameter = new OracleParameter();
                apellidoParameter.ParameterName = "R_APELLIDOS";
                apellidoParameter.OracleType = OracleType.NVarChar;
                apellidoParameter.Size = 200;
                apellidoParameter.Direction = ParameterDirection.Input;
                apellidoParameter.Value = apellidos.Trim().ToLower();

                OracleParameter areaParameter = new OracleParameter();
                areaParameter.ParameterName = "R_AREA";
                areaParameter.OracleType = OracleType.NVarChar;
                areaParameter.Size = 10;
                areaParameter.Direction = ParameterDirection.Input;
                areaParameter.Value = area;

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);
                cmd.Parameters.Add(apellidoParameter);
                cmd.Parameters.Add(areaParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos u = new Mantenimientos();
                        u.NumDocUsuario = Convert.ToString(dr[0]);
                        u.ApeUsuario = Convert.ToString(dr[1]);
                        u.NomUsuario = Convert.ToString(dr[2]);
                        u.Email = Convert.ToString(dr[3]);
                        u.UserUsuario = Convert.ToString(dr[4]);
                        u.CodTipoDocumento = Convert.ToString(dr[5]);
                        u.IdPerfil = Convert.ToInt32(dr[6]);
                        u.CodArea = Convert.ToString(dr[7]);
                        u.PassUsuario = Convert.ToString(dr[8]);

                        list.Add(u);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deleteUsuario(Mantenimientos u)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETEUSUARIO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter u1 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                u1.Value = u.NumDocUsuario;

                cmd.Parameters.Add(u1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updateUsuario(Mantenimientos u)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATEUSUARIO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter u1 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                u1.Value = u.NumDocUsuario;

                OracleParameter u2 = new OracleParameter("R_TIP_DOC", OracleType.VarChar, 10);
                u2.Value = u.CodTipoDocumento;

                OracleParameter u3 = new OracleParameter("R_APELLIDOS", OracleType.VarChar, 200);
                u3.Value = u.ApeUsuario;

                OracleParameter u4 = new OracleParameter("R_NOMBRES", OracleType.VarChar, 200);
                u4.Value = u.NomUsuario;

                OracleParameter u5 = new OracleParameter("R_USER_LOGIN", OracleType.VarChar, 50);
                u5.Value = u.UserUsuario;

                OracleParameter u6 = new OracleParameter("R_PASS_LOGIN", OracleType.VarChar, 50);
                u6.Value = u.PassUsuario;

                OracleParameter u7 = new OracleParameter("R_EMAIL", OracleType.VarChar, 100);
                u7.Value = u.Email;

                OracleParameter u8 = new OracleParameter("R_PERFIL", OracleType.Int32);
                u8.Value = u.IdPerfil;

                OracleParameter u9 = new OracleParameter("R_AREA", OracleType.VarChar, 20);
                u9.Value = u.CodArea;

                cmd.Parameters.Add(u1);
                cmd.Parameters.Add(u2);
                cmd.Parameters.Add(u3);
                cmd.Parameters.Add(u4);
                cmd.Parameters.Add(u5);
                cmd.Parameters.Add(u6);
                cmd.Parameters.Add(u7);
                cmd.Parameters.Add(u8);
                cmd.Parameters.Add(u9);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        /// <summary>
        /// ////////////////////////// ------ CORREO -------- ///////////////////////////////
        /// </summary>
        ///

        public List<Mantenimientos> consultarCorreo(string CodCorreo)
        {
            List<Mantenimientos> lstObject = new List<Mantenimientos>();
            try
            {
                OracleCommand cmd = new OracleCommand("BUSCARCORREO", objCn);
                objCn.Open();
                cmd.Connection = objCn;
                cmd.CommandTimeout = 60;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new OracleParameter("RECORDSET", OracleType.Cursor, 100, ParameterDirection.Output, null, DataRowVersion.Current, false, null));
                cmd.Parameters.Add(new OracleParameter("R_CODTIPOCORRREO", OracleType.VarChar, 20, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, CodCorreo));

                using (IDataReader oRead = cmd.ExecuteReader(CommandBehavior.SingleResult))
                {
                    if (oRead != null)
                    {
                        while (oRead.Read())
                        {
                            Mantenimientos pt = new Mantenimientos();

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VCOR_CODTIPO_CORREO")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VCOR_CODTIPO_CORREO")).ToString()))
                                {
                                    pt.CodTipCorreo = oRead.GetString(oRead.GetOrdinal("VCOR_CODTIPO_CORREO"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VCOR_DESCRIP_CORREO")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VCOR_DESCRIP_CORREO")).ToString()))
                                {
                                    pt.DescripCorreo = oRead.GetString(oRead.GetOrdinal("VCOR_DESCRIP_CORREO"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VCOR_TITULO_CORREO")))
                            {
                                if (!String.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VCOR_TITULO_CORREO"))))
                                {
                                    pt.TituloCorreo = oRead.GetString(oRead.GetOrdinal("VCOR_TITULO_CORREO"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VCOR_DETALLE_CORREO")))
                            {
                                if (!String.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VCOR_DETALLE_CORREO"))))
                                {
                                    pt.DetalleCorreo = oRead.GetString(oRead.GetOrdinal("VCOR_DETALLE_CORREO"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VCOR_FECHAACTUALIZO")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetDateTime(oRead.GetOrdinal("VCOR_FECHAACTUALIZO")).ToString()))
                                {
                                    pt.FechaActCorreo = oRead.GetDateTime(oRead.GetOrdinal("VCOR_FECHAACTUALIZO"));
                                }
                            }

                            lstObject.Add(pt);
                            pt = null;
                        }
                    }
                }

            }
            catch (Exception ex)
            {
                objCn.Dispose();
            }
            finally
            {
                objCn.Close();
            }

            return lstObject;
        }


        public int updateCorreo(Mantenimientos u)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATECORREO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter u1 = new OracleParameter("R_CODTIPOCORREO", OracleType.VarChar, 20);
                u1.Value = u.CodTipCorreo;

                OracleParameter u2 = new OracleParameter("R_TITULOCORREO", OracleType.VarChar, 1000);
                u2.Value = u.TituloCorreo;

                OracleParameter u3 = new OracleParameter("R_DETALLECORREO", OracleType.VarChar, 4000);
                u3.Value = u.DetalleCorreo;

                OracleParameter u4 = new OracleParameter("R_USUACTUALIZO", OracleType.VarChar, 1000);
                u4.Value = u.UsuarioActCorreo;

                OracleParameter u5 = new OracleParameter("R_FECHAACTUALIZO", OracleType.DateTime);
                u5.Value = u.FechaActCorreo;

                cmd.Parameters.Add(u1);
                cmd.Parameters.Add(u2);
                cmd.Parameters.Add(u3);
                cmd.Parameters.Add(u4);
                cmd.Parameters.Add(u5);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int insertPerfil(Mantenimientos p)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTPERFIL", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter p1 = new OracleParameter("R_DESCRIPCION", OracleType.VarChar, 200);
                p1.Value = p.NomPerfil;

                OracleParameter p2 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                p2.Value = p.FecRegistro;

                OracleParameter p3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                p3.Value = p.FecActualizacion;

                OracleParameter p4 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                p4.Value = p.NumDocUsuario;

                cmd.Parameters.Add(p1);
                cmd.Parameters.Add(p2);
                cmd.Parameters.Add(p3);
                cmd.Parameters.Add(p4);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarPerfil(string descripcion)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARPERFIL", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_DESCRIPCION";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 200;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = descripcion.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos p = new Mantenimientos();
                        p.IdPerfil = Convert.ToInt32(dr[0]);
                        p.NomPerfil = Convert.ToString(dr[1]);
                        p.FecRegistro = Convert.ToDateTime(dr[2]);
                        list.Add(p);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deletePerfil(Mantenimientos p)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETEPERFIL", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter p1 = new OracleParameter("R_CODIGO", OracleType.Int32);
                p1.Value = p.IdPerfil;

                cmd.Parameters.Add(p1);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int updatePerfil(Mantenimientos p)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATEPERFIL", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter p1 = new OracleParameter("R_CODIGO", OracleType.Int32);
                p1.Value = p.IdPerfil;

                OracleParameter p2 = new OracleParameter("R_NOMBRE", OracleType.VarChar, 200);
                p2.Value = p.NomPerfil;

                OracleParameter p3 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                p3.Value = p.FecActualizacion;

                cmd.Parameters.Add(p1);
                cmd.Parameters.Add(p2);
                cmd.Parameters.Add(p3);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }


        #region Edy

        #region Tipo Queja

        public int insertTipoQueja(Mantenimientos p)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("INSERTTIPOQUEJA", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter p1 = new OracleParameter("R_Vque_Desc_Tip_Que", OracleType.VarChar, 200);
                p1.Value = p.TQ_VQUE_DESC_TIP_QUE;

                OracleParameter p2 = new OracleParameter("R_Ique_Plazo_Cantidad", OracleType.VarChar, 200);
                p2.Value = p.TQ_IQUE_PLAZO_CANTIDAD;

                OracleParameter p3 = new OracleParameter("R_Vque_Plazo_Unidad", OracleType.VarChar, 200);
                p3.Value = p.TQ_VQUE_PLAZO_UNIDAD;

                OracleParameter p4 = new OracleParameter("R_FECHA_REGISTRO", OracleType.DateTime);
                p4.Value = p.FecRegistro;

                OracleParameter p5 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                p5.Value = p.FecActualizacion;

                OracleParameter p6 = new OracleParameter("R_NRO_DOCUMENTO", OracleType.VarChar, 20);
                p6.Value = p.NumDocUsuario;

                cmd.Parameters.Add(p1);
                cmd.Parameters.Add(p2);
                cmd.Parameters.Add(p3);
                cmd.Parameters.Add(p4);
                cmd.Parameters.Add(p5);
                cmd.Parameters.Add(p6);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public List<Mantenimientos> consultarTipoQueja(string descripcion)
        {
            List<Mantenimientos> list = new List<Mantenimientos>();

            using (OracleCommand cmd = new OracleCommand("BUSCARTIPOQUEJA", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter nombreParameter = new OracleParameter();
                nombreParameter.ParameterName = "R_VQUE_DESC_TIP_QUE";
                nombreParameter.OracleType = OracleType.NVarChar;
                nombreParameter.Size = 200;
                nombreParameter.Direction = ParameterDirection.Input;
                nombreParameter.Value = descripcion.Trim().ToLower();

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(nombreParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        Mantenimientos e = new Mantenimientos();
                        e.TQ_VQUE_COD_TIP_QUE = Convert.ToString(dr[0]);
                        e.TQ_VQUE_DESC_TIP_QUE = Convert.ToString(dr[1]);
                        e.TQ_IQUE_PLAZO_CANTIDAD = Convert.ToInt32(dr[2]);
                        e.TQ_VQUE_PLAZO_UNIDAD = Convert.ToString(dr[3]);
                        e.FecRegistro = Convert.ToDateTime(dr[4]);
                        e.FecActualizacion = Convert.ToDateTime(dr[5]);
                        e.NumDocUsuario = Convert.ToString(dr[6]);
                        list.Add(e);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }

        public int deleteTipoQueja(Mantenimientos p)
        {
            int resultado = 0;
            try
            {
                using (OracleCommand cmd = new OracleCommand("DELETETIPOQUEJA", objCn))
                {
                    cmd.CommandType = CommandType.StoredProcedure;

                    OracleParameter p1 = new OracleParameter("R_CODIGO", OracleType.VarChar);
                    p1.Value = p.TQ_VQUE_COD_TIP_QUE;

                    cmd.Parameters.Add(p1);
                    objCn.Open();
                    resultado = cmd.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                objCn.Dispose();
                throw ex;
            }
            finally
            {
                objCn.Close();
            }
            return resultado;
        }

        public int updateTipoQueja(Mantenimientos p)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("UPDATETIPOQUEJA", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter p1 = new OracleParameter("R_Vque_Cod_Tip_Que", OracleType.VarChar, 10);
                p1.Value = p.TQ_VQUE_COD_TIP_QUE;

                OracleParameter p2 = new OracleParameter("R_Vque_Desc_Tip_Que", OracleType.VarChar, 200);
                p2.Value = p.TQ_VQUE_DESC_TIP_QUE;

                OracleParameter p3 = new OracleParameter("R_Ique_Plazo_Cantidad", OracleType.VarChar, 200);
                p3.Value = p.TQ_IQUE_PLAZO_CANTIDAD;

                OracleParameter p4 = new OracleParameter("R_Vque_Plazo_Unidad", OracleType.VarChar, 200);
                p4.Value = p.TQ_VQUE_PLAZO_UNIDAD;

                OracleParameter p5 = new OracleParameter("R_FECHA_ACTUALIZACION", OracleType.DateTime);
                p5.Value = p.FecActualizacion;

                cmd.Parameters.Add(p1);
                cmd.Parameters.Add(p2);
                cmd.Parameters.Add(p3);
                cmd.Parameters.Add(p4);
                cmd.Parameters.Add(p5);

                try
                {
                    objCn.Open();

                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        #endregion


        #endregion

    }
}
